"""
Django 模型 工具类
"""

from django.contrib.auth import get_user_model
from django.db.models import Model

from my_typing import *


def get_user_field(model: Model | type[Model]) -> StrOrNone:
    """
    获取模型的用户字段

    Args:
        model: 模型 / 模型实例

    Returns:
        用户字段
    """

    user_model = get_user_model()

    # 遍历当前 Model 的所有字段
    for field in model._meta.get_fields():  # noqa
        if (
            field.is_relation
            and field.related_model is user_model
        ):
            return field.name

    return None
